// ~ CopyRight © 2012 USTC SINOVATE  SOFTWARE CO.LTD All Rights Reserved.
package com.cmcc.zysoft.infocollection.util;

import org.springframework.util.StringUtils;

import net.sourceforge.pinyin4j.PinyinHelper;

/**
 * @author 李梦华
 * <br />邮箱： li.menghua@ustcinfo.com
 * <br />描述：pinyin
 * <br />版本:1.0.0
 * <br />日期： 2013-3-28 上午11:06:08
 * <br />CopyRight © 2012 USTC SINOVATE  SOFTWARE CO.LTD All Rights Reserved.
 */

public class ConcatPinyin {
	
	/**
	 * 将拼音数组转化成字符串-中间已换行符分开.
	 * @param pinyinArray 
	 * @return String
	 */
	public static String concatPinyinStringArray(String[] pinyinArray) {
	        StringBuffer pinyinStrBuf = new StringBuffer();
	        if ((null != pinyinArray) && (pinyinArray.length > 0)) {
	            for (int i = 0; i < pinyinArray.length; i++) {
	                pinyinStrBuf.append(pinyinArray[i]);
	                pinyinStrBuf.append(System.getProperty("line.separator"));
	            }
	        }
	        String outputString = pinyinStrBuf.toString();
	        return outputString;
	    }
	
	/**
	 * 将名字转化为拼音.
	 * @param userName 名字
	 * @return String
	 */
	public static String changeToPinyin(String userName) {
		if(!StringUtils.hasText(userName)) {
			return "";
		} else {
			String result = "";
			for(int i = 0; i < userName.length(); i++) {
				char hanzi = userName.charAt(i);//取名字中的每一个字,如果为字母或者数字,不做转换.
				if((hanzi >= '0' && hanzi <= '9') || (hanzi >= 'a' && hanzi <= 'z') || (hanzi >= 'A' && hanzi <= 'Z')) {
					result += hanzi;
				} else {
					try{
						String [] pinyin = PinyinHelper.toHanyuPinyinStringArray(hanzi);//转化后的结果,音调可能不同
						if(pinyin.length == 0) {
							result += "";//如果没有转化成功,则用空格代替
						} else {
							String rightName = pinyin[0];//取结果中的第一个
							result += rightName.substring(0, rightName.length() - 1);//截取掉末尾的音调
						}
					} catch (Exception e) {
						result += "";
						e.printStackTrace();
					}
				}
			}
			return result;
		}
	}
	
	/**
	 * 名字拼音的首字母.
	 * @param userName 名字
	 * @return String
	 */
	public static String firstwordOfName(String userName) {
		if(!StringUtils.hasText(userName)) {
			return "";
		} else {
			String result = "";
			for(int i = 0; i < userName.length(); i++) {
				char hanzi = userName.charAt(i);//取名字中的每一个字,如果为字母或者数字,不做转换.
				if((hanzi >= '0' && hanzi <= '9') || (hanzi >= 'a' && hanzi <= 'z') || (hanzi >= 'A' && hanzi <= 'Z')) {
					result += "";
				} else {
					try {
						String [] pinyin = PinyinHelper.toHanyuPinyinStringArray(hanzi);//转化后的结果,音调可能不同
						if(pinyin.length == 0) {
							result += "";//如果没有转化成功,则用空格代替
						} else {
							String rightName = pinyin[0];//取结果中的第一个
							result += rightName.substring(0, 1);//取首字母
						}
					} catch (Exception e) {
						result += "";
						e.printStackTrace();
					}
				}
			}
			return result;
		}
	}
	
	public static void main(String[] args) {
		System.out.println(changeToPinyin("吴敏01"));
	}
}